package realQuestion.nenglian;

import listNodePractice.ListNode;

public class Main1 {
//    public ListNode partition(ListNode pHead, int x) {
//        // write code here
//        ListNode cur = pHead;
//        ListNode as = null;
//        ListNode ae = null;
//        ListNode bs = null;
//        ListNode be = null;
//        while (cur != null) {
//            if (cur != null) {
//                if (cur.val < x) {
//                    if (ae == null) {
//                        as = cur;
//                        ae = cur;
//                        cur = cur.next;
//                    } else {
//                        ae.next = cur;
//                        ae = ae.next;
//                        cur = cur.next;
//                    }
//
//                }
//            } else {
//                if (be==null){
//                    bs=cur;
//                    be=cur;
//                    cur=cur.next;
//                }else {
//                    be.next=cur;
//                    be=be.next;
//                    cur=cur.next;
//                }
//            }
//        }
//        if (as==null){
//            return bs;
//        }
//        as.next=bs;
//        if (bs!=null){
//            be.next=null;
//        }
//        return  as;
//    }

    public ListNode partition(ListNode pHead, int x) {
        ListNode greater = new ListNode(0);
        ListNode less = new ListNode(0);
        ListNode a=greater;
        ListNode b=less;
        while (pHead!=null){
            if (pHead.val>=x){
                a.next=pHead;
                a=a.next;
            }
            else {
                b.next=pHead;
                b=b.next;
            }
            pHead=pHead.next;
        }
        a.next=null;
        b.next=greater.next;
        return  less.next;
    }
}

